import { createEmptyVNode } from '../vdom/vnode'
export function initLifecycle (vm) {
    console.log('initLifecycle 开始')
    // todo 拿到父组件let parent
    vm.$parent = null
    // 是否存在父组件 存在拿父组件的$root作为根组件 否则当实例为根组件
    vm.$root = parent ? parent.$root : vm
    // 参数初始化
    vm.$children = []
    vm.$refs = {}

    vm._watcher = null
    
    // todo 其他属性的初始化 _inactive _directInactive _isMounted _isDestroyed _isBeingDestroyed
    console.log('initLifecycle 结束')
}

export function lifecycleMixin(Vue) {
    console.log('lifecycleMixin 开始')
    // todo 实现 _update $forceUpdate $destroy 
    console.log('lifecycleMixin 结束')
}
// $mount 实际执行的方法 $mount 定义在 platforms/runtime/index
export function mountComponent(vm, el, hydrating) {
    vm.$el = el;
    // 如果没有render选项
    if(!vm.$options.render){
        vm.$options.render = createEmptyVNode
    }
    // todo... beforeMount 生命周期
    // _update 更新函数 _render渲染函数
    // 将_render函数的执行结果 虚拟Dom 传入更新函数_update
    let updateComponent
    updateComponent = ()=>{
        // vm._update(vm.render(),hydrating)
    }
    // new Wtacher()
    
    return vm
}